package com.todod.exception;

/**
 * 业务异常基类. 带有错误代码与错误信息 <br>
 * 用户在生成异常时既可以直接赋予错误代码与错误信息. 也可以只赋予错误代码与错误信息参数.<br>
 * 如ErrorCode=ORDER.LACK_INVENTORY ,errorArg=without EJB
 * 系统会从errors.properties中查出 ORDER.LACK_INVENTORY=Book <{0}> lack of inventory
 * 最后返回错误信息为 Book <without EJB> lack of inventory.
 * 
 * 
 */
public class BusinessException extends RuntimeException {

	/**
	 * serialVersionUID
	 */
	private static final long serialVersionUID = 1721891525581654383L;

	/**
	 * 错误代码,默认为未知错误
	 */
	private String errorCode = "UNKNOW_ERROR";

	/**
	 * 错误信息中的参数
	 */
	private Object[] errorArgs = null;

	/**
	 * 构造函数
	 */
	public BusinessException() {
		super();
	}

	public BusinessException(String message) {
		super(message);
	}

	/**
	 * 构造函数
	 * 
	 * @param errorCode 错误代码
	 * @param errorArgs 错误填充信息
	 */
	public BusinessException(String errorCode, Object... errorArgs) {
		this.errorCode = errorCode;
		this.errorArgs = errorArgs;
	}

	/**
	 * 错误填充信息
	 * 
	 * @param cause     cause
	 * @param errorCode 错误代码
	 * @param errorArgs 错误填充信息
	 * 
	 */
	public BusinessException(Throwable cause, String errorCode, Object... errorArgs) {
		super(cause);
		this.errorCode = errorCode;
		this.errorArgs = errorArgs;
	}

	/**
	 * 获取errorCode
	 * 
	 * @return errorCode
	 */
	public String getErrorCode() {
		return errorCode;
	}

}